﻿// 5290. 重新分装.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>

/*
https://www.acwing.com/problem/content/5293/

有 n
 种零件，编号 1∼n
。

第 i
 种零件的数量为 ai
。

有 n
 个箱子，编号 1∼n
。

初始时，所有零件都装在第 1
 个箱子里。

我们希望将所有零件重新分装，使得最终对于每个 i
（1≤i≤n
）都满足，所有的第 i
 种零件都装在第 i
 个箱子里。

为此，你可以进行任意次（也可以不进行）分装操作，每次操作分为以下步骤：

第一步，任选一个非空箱子，并拿出该箱子中的所有零件。
第二步，任选 2∼3
 个空箱子（在上一步中被清空的箱子也可以选），将在上一步中拿出的所有零件重新分装到这些被选中的空箱子中，你可以随意分配这些零件的归属，但是要求每个被选中的空箱子都至少需要被放入一个零件。
每次操作所需付出的代价等于该次操作第一步中拿出的零件的数量。

请你计算，为了完成目标所需付出的总代价的最小可能值。

输入格式
第一行包含整数 n
。

第二行包含 n
 个整数 a1,a2,…,an
。

输出格式
一个整数，表示总代价的最小可能值。

数据范围
前 3
 个测试点满足 1≤n≤10
。
所有测试点满足 1≤n≤2×105
，1≤ai≤109
。

输入样例1：
3
1 2 3
输出样例1：
6
输入样例2：
4
2 3 4 5
输出样例2：
19
*/
int main()
{
    std::cout << "Hello World!\n";
}

 